//class Solution {
//public:
//    int wiggleMaxLength(vector<int>& nums) {
//        int n = nums.size();
//        vector<int> f(n, 1);
//        auto g = f;
//        for (int i = 1; i < n; i++)
//        {
//            for (int j = 0; j < i; j++)
//            {
//                if (nums[j] < nums[i]) f[i] = max(f[i], g[j] + 1);
//                if (nums[j] > nums[i]) g[i] = max(g[i], f[j] + 1);
//            }
//        }
//        int ret1 = 0, ret2 = 0;
//        for (auto e : f) ret1 = max(ret1, e);
//        for (auto e : g) ret2 = max(ret2, e);
//        return max(ret1, ret2);
//    }
//};


//class Solution {
//public:
//    int findNumberOfLIS(vector<int>& nums) {
//        int n = nums.size();
//        vector<int> len(n, 1);
//        auto count = len;
//        int retlen = 1, retcount = 1;
//        for (int i = 1; i < n; i++)
//        {
//            for (int j = 0; j < i; j++)
//            {
//                if (nums[j] < nums[i])
//                {
//                    if (len[j] + 1 == len[i]) count[i] += count[j];
//                    else if (len[j] + 1 > len[i])
//                    {
//                        len[i] = len[j] + 1;
//                        count[i] = count[j];
//                    }
//                }
//            }
//            if (retlen == len[i]) retcount += count[i];
//            else if (retlen < len[i])
//            {
//                retlen = len[i];
//                retcount = count[i];
//            }
//        }
//        return retcount;
//    }
//};

